import { createStore } from 'vuex'

// vue2.0 创建仓库 new Vuex.Store({})
// vue3.0 创建仓库 createStore({})

// A模块
const moduleA = {
        state: {
            username: 'moduleA'
        },
        getters: {
            newName(state) {
                return state.username + '!!!'
            }
        },
        mutations: {
            updateName(state) {
                state.username = 'moduleA+AAAA'
            }
        }
    }
    // B模块
const moduleB = {
    // 带命名空间的模块
    namespaced: true,
    state: () => {
        return { username: 'moduleB' }
    },
    getters: {
        newName(state) {
            return state.username + '!!!'
        }
    },
    mutations: {
        // 修改名字的mutation
        update(state) {
            state.username = 'BBBB+' + state.username
        }
        // updateName(state) {
        //     state.username = 'ls'
        // }
    },
    actions: {
        update({ commit }) {
            // 假设请求
            setTimeout(() => {
                commit('update')
            }, 2000)
        }
    }
}

export default createStore({
        modules: {
            moduleA,
            moduleB
        }
    })
    // vuex的使用练习
    // state: {
    //     //  存状态的，数据
    //     username: 'zs'
    // },
    // getters: {
    //     //  写计算属性的，vuex计算属性
    //     newName(state) {
    //         return state.username + '!!!'
    //     }
    // },
    // mutations: {
    //     //  修改方法的，改数据函数
    //     updateName(state) {
    //         state.username = 'ls'
    //     }

// },
// actions: {
//     // 请求数据函数，拿数据的
//     updateName(ctx) {
//         setTimeout(() => {
//             ctx.commit('updateName')
//         }, 1000)
//     }
// },
// modules: {
//     // 分模块
// }